package com.doit.beans.day06

import org.apache.spark.sql.{DataFrame, SparkSession}

/**
 * @Author: Hang.Nian.YY
 * @WX: 17710299606
 * @Tips: 学大数据 ,到多易教育
 * @DOC: https://blog.csdn.net/qq_37933018?spm=1000.2115.3001.5343
 * @Description:
 */
object Demo01 {
  def main(args: Array[String]): Unit = {
    // 1 获取SQL编程对象
    val session = SparkSession
      .builder()
      .master("local[*]")
      .appName("sql")
      .getOrCreate()





    // 2 加载结构化数据
    /**
     * 1. RDD 的是特性  (分布性计算)
     * 2. 数据结构 比如字段名  数据类型
     * DataFrame =  RDD  +  结构 (Struct)
     * DataFrame是基于RDD之上的更高层级的封装 ,在DF上可以使用SQL对数据进行分析
     *
     * 映射输入数据  --->  创建DataFrame----> 创建视图 ----->   SQL
     */
    val data: DataFrame = session.read.json("data/log/")
    data.show()

    data.select("guid" , "event_name").where("guid = 2").show()

    // 创建表   表映射具体的数据
    data.createTempView("tb_log")
    // 3 分析数据
    val res = session.sql(
      """
        |select
        |guid ,
        |count(1)  as  cnt
        |from
        |tb_log
        |group  by  guid
        |""".stripMargin)

    // 4 展示结果
    res.show()

    // 5 释放资源
    session.close()

  }

}
